home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / linkedit / linkedit.lha / link-edit / LinkEdit / link_edit_mc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-03-15  |  6.3 KB  |  227 lines

  1. /* Box menu choice source created by BoxTool.*/
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <X11/Xlib.h>
  6. #include "link_edit_types.h"
  7. #include "link_edit_global.h"
  8.  
  9. LinkEditMenuChoice(gnrc,num,choice)
  10.  
  11. LinkEditStatus *gnrc;
  12. int num,*choice;
  13.  
  14. {
  15.   char strng[80],*ch_ptr; 
  16.   int rtrn,set;
  17.   char **namesv;
  18.   char *dir;
  19.   int namesc;
  20.   int writeorread;
  21.  
  22.   if(num < 1) return(-1);
  23.  
  24.   switch(choice[num-1]) {
  25.      case LINK_EDIT_SAVE_FILE:
  26.        clearsuff();
  27.        addsuff("*.lnkp");
  28.        writeorread = 1;
  29.        namesc = 0;
  30.        choosefile(&namesc,&namesv,&dir,".",writeorread);
  31.        if(namesc != 1) {
  32.            LinkPublicPrintMessage(gnrc->link_status,
  33.                       "Must select one filename.");
  34.            break;
  35.          }
  36.        sprintf(strng,"%s/%s",dir,namesv[0]);
  37.        ch_ptr = strrchr(strng,'.');
  38.        if(ch_ptr == NULL || strcmp(ch_ptr,".lnkp") != 0) /* Append suffix */
  39.           strcat(strng,".lnkp");
  40.  
  41.        if(LinkSaveAll(gnrc->link_status,strng) == 0) {
  42.            LinkPublicPrintMessage(gnrc->link_status,"Link saved.");
  43.          }
  44.        chfree(&namesc,&namesv);
  45.        break;
  46.  
  47.      case LINK_EDIT_SAVE_PS:
  48.        clearsuff();
  49.        addsuff("*.ps");
  50.        writeorread = 1;
  51.        namesc = 0;
  52.        choosefile(&namesc,&namesv,&dir,".",writeorread);
  53.        if(namesc != 1) {
  54.            LinkPublicPrintMessage(gnrc->link_status,
  55.                       "Must select one filename.");
  56.            break;
  57.          }
  58.        sprintf(strng,"%s/%s",dir,namesv[0]);
  59.        ch_ptr = strrchr(strng,'.');
  60.        if(ch_ptr == NULL || strcmp(ch_ptr,".ps") != 0) /* Append suffix */
  61.           strcat(strng,".ps");
  62.  
  63.        if(LinkSavePS(gnrc->link_status,strng) == 0) {
  64.            LinkPublicPrintMessage(gnrc->link_status,"Postscript file saved.");
  65.          }
  66.        chfree(&namesc,&namesv);
  67.  
  68.        break;
  69.  
  70.      case LINK_EDIT_SAVE_THREE_D_FILE:
  71.        clearsuff();
  72.        addsuff("*.lnk");
  73.        writeorread = 1;
  74.        namesc = 0;
  75.        choosefile(&namesc,&namesv,&dir,".",writeorread);
  76.        if(namesc != 1) {
  77.            LinkPublicPrintMessage(gnrc->link_status,
  78.                       "Must select one filename.");
  79.            break;
  80.          }
  81.        sprintf(strng,"%s/%s",dir,namesv[0]);
  82.        ch_ptr = strrchr(strng,'.');
  83.        if(ch_ptr == NULL || strcmp(ch_ptr,".lnk") != 0) /* Append suffix */
  84.           strcat(strng,".lnk");
  85.  
  86.        if(LinkSaveThreeD(gnrc->link_status,strng) == 0) {
  87.            LinkPublicPrintMessage(gnrc->link_status,"3DLink saved.");
  88.          }
  89.        chfree(&namesc,&namesv);
  90.  
  91.        break;
  92.  
  93.      case LINK_EDIT_SELECT_STRAND:
  94.        LinkModeSelectLink(gnrc->link_status);
  95.        break;
  96.  
  97.      case LINK_EDIT_QUIT: 
  98.        rtrn = LinkPublicUrgentWindowDialogue(gnrc->link_status,
  99.                                      "Exit Link Editor (y/n)? ",strng);
  100.        if(rtrn > 0 && strng[0] == 'y') {
  101.           LinkEditExit((VOID *) gnrc);
  102.           exit(0);
  103.          }
  104.        LinkPublicPrintMessage(gnrc->link_status,"Whew!");
  105.        break;
  106.  
  107.      case LINK_EDIT_CLOSE_STRAND: 
  108.        LinkModeCloseStrand(gnrc->link_status);
  109.        break;
  110.  
  111.      case LINK_EDIT_OPEN_STRAND: 
  112.        LinkModeOpenStrand(gnrc->link_status);
  113.        break;
  114.  
  115.      case LINK_EDIT_ADD_POINT: 
  116.        LinkModeAddPoint(gnrc->link_status);
  117.        break;
  118.  
  119.      case LINK_EDIT_MOVE_POINT: 
  120.        LinkModeMovePoint(gnrc->link_status);
  121.        break;
  122.  
  123.      case LINK_EDIT_DELETE_POINT: 
  124.        LinkModeDeletePoint(gnrc->link_status);
  125.        break;
  126.  
  127.      case LINK_EDIT_MOVE_STRAND: 
  128.        LinkModeTranslateLink(gnrc->link_status);
  129.        break;
  130.  
  131.      case LINK_EDIT_SHIFT_VIEW: 
  132.        LinkModeShiftView(gnrc->link_status);
  133.        break;
  134.  
  135.      case LINK_EDIT_ZOOM_VIEW: 
  136.        LinkModeZoomView(gnrc->link_status);
  137.        break;
  138.  
  139.      case LINK_EDIT_CENTER_VIEW: 
  140.        LinkCenterView(gnrc->link_status);
  141.        break;
  142.  
  143.      case LINK_EDIT_HIDE_STRAND:
  144.        LinkModeHideLink(gnrc->link_status);
  145.        break;
  146.  
  147.      case LINK_EDIT_SHOW_ALL:
  148.        LinkShowAll(gnrc->link_status);
  149.        break;
  150.  
  151.      case LINK_EDIT_FLIP_CROSSING: 
  152.        LinkModeFlipCrossing(gnrc->link_status);
  153.        break;
  154.  
  155.      case LINK_EDIT_JOIN_STRANDS: 
  156.        LinkModeJoinLinks(gnrc->link_status);
  157.        break;
  158.  
  159.      case LINK_EDIT_SETTINGS_OK:
  160.        ExtractBoxToggleState(gnrc->box_status,LINK_EDIT_SETTINGS_AXES,&set);
  161.        LinkSetAxes(gnrc->link_status,set);
  162.  
  163.        ExtractBoxToggleState(gnrc->box_status,LINK_EDIT_SETTINGS_RULERS,&set);
  164.        LinkSetRulers(gnrc->link_status,set);
  165.  
  166.        ExtractBoxToggleState(gnrc->box_status,LINK_EDIT_SETTINGS_ARROWS,&set);
  167.        LinkSetArrows(gnrc->link_status,set);
  168.  
  169.        ExtractBoxToggleState(gnrc->box_status,LINK_EDIT_SETTINGS_VERTICES,&set);
  170.        LinkSetVertices(gnrc->link_status,set);
  171.  
  172.        LinkPublicReDraw(gnrc->link_status);
  173.        break; 
  174.  
  175.      case LINK_EDIT_GET_LINK_FILE: 
  176.        clearsuff();
  177.        addsuff("*.lnkp");
  178.        writeorread = 1;
  179.        namesc = 0;
  180.        choosefile(&namesc,&namesv,&dir,".",writeorread);
  181.        if(namesc != 1) {
  182.            LinkPublicPrintMessage(gnrc->link_status,
  183.                       "Must select one filename.");
  184.            break;
  185.          }
  186.        sprintf(strng,"%s/%s",dir,namesv[0]);
  187.        ch_ptr = strrchr(strng,'.');
  188.        if(ch_ptr == NULL || strcmp(ch_ptr,".lnkp") != 0) /* Append suffix */
  189.           strcat(strng,".lnkp");
  190.  
  191.        if(LinkGetFile(gnrc->link_status,strng) == 0) {
  192.            LinkPublicPrintMessage(gnrc->link_status,"Link read.");
  193.          }
  194.        chfree(&namesc,&namesv);
  195.        LinkPublicReDraw(gnrc->link_status);
  196.        break;
  197.  
  198.      case LINK_EDIT_ADD_STRAND: 
  199.        LinkCreateNewLink(gnrc->link_status);
  200.        LinkModeAddPoint(gnrc->link_status);
  201.        ChangeBoxToggleState(gnrc->box_status, LINK_EDIT_ADD_POINT,1);
  202.        LinkPublicReDraw(gnrc->link_status);
  203.        break;
  204.  
  205.      case LINK_EDIT_DELETE_STRAND: 
  206.        LinkModeDeleteStrand(gnrc->link_status);
  207.        break;
  208.  
  209.      case LINK_EDIT_CLEAR: 
  210.        rtrn = LinkPublicUrgentWindowDialogue(gnrc->link_status,
  211.                                      "Clear everything (y/n)? ",strng);
  212.        if(rtrn > 0 && strng[0] == 'y') {
  213.           LinkPublicDeleteAll(gnrc->link_status);
  214.           LinkPublicReDraw(gnrc->link_status);
  215.          }
  216.        else {
  217.           LinkPublicPrintMessage(gnrc->link_status,"Whew!");
  218.          }
  219.        break;
  220.  
  221.      case LINK_EDIT_REVERSE_ARROWS:
  222.        LinkModeReverseArrows(gnrc->link_status);
  223.        break;
  224.  
  225.     }
  226. }
  227.